﻿<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="cmd.css" rel="stylesheet" type="text/css">
<title>制作grub4dos启动ISO镜像</title>
</head>

<body>
<blockquote>
  <blockquote>
    <blockquote>
      <blockquote>
        <h2>制作grub4dos启动ISO镜像
      </h2>
      </blockquote>
    </blockquote>
  </blockquote>
  <span class="style1">建议使用软件 mkisofs 来制作grub4dos启动iso镜像。不建议使用UltraISO制作或修改grub4dos启动镜像，因修改后可能会出现启动失败的问题。</span></blockquote>
<p class="style1">mkisofs 下载： <a href="http://code.google.com/p/mkisofs-md5/downloads/list" target="_blank">http://code.google.com/p/mkisofs-md5/downloads/list<br>
</a>mkisofs 是命令行工具，我们需要用到的是主程序 Mkisofs.exe 以及 Cygwin1.dll 两个文件，以及一个自己编写的适合自己情况的bat脚本文件（当然，也可以在命令行下敲入一行长长的命令来制作iso镜像，但我相信没有人愿意这么做，浪费时间不说还有敲错的危险，最重要的是，可能会对mkisofs的作者怨气越来越重：为什么会有这么多参数！开个玩笑）。</p>
<p>必须的文件准备好后按下面的树形图放置：</p>
<p>─grub4dos-------------------主文件夹，任意命名<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├bin----------------------mkisofs所在文件夹（可以任意命名，但要注意脚本里别写错）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;││<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│├mkisofs.exe----------mkisofs主程序<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;││<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│└cygwin1.dll-----------mkisofs.exe必需<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├boot--------------------镜像文件所在文件夹（即这个文件夹下面的所有文件将被打包成镜像）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;││<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│├grldr------------------仅用来说明<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;││<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│└MENU.LST---------仅用来说明<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;└mkiso.bat---------------下面要学习编写的脚本文件，任意命名</p>
<p>&nbsp;</p>
<blockquote>
  <blockquote>
    <blockquote>
      <h3>Mkisofs参数说明</h3>
    </blockquote>
  </blockquote>
</blockquote>
<p>mkisofs的参数有很多，通常制作iso镜像只需要其中的一小部分。想看完整参数介绍可以使用 mkisofs -help 命令查看。</p>
<p class="Options">注意：参数区分大小写！！！</p>
<p>再多句嘴，先简单说明下ISO9660格式和Joliet格式区别：</p>
<p>ISO-9660：</p>
<blockquote>
  <p class="style1">又简称ISO，当前唯一通用的光盘文件系统，任何类型的计算机都支持。目前有两个标准：Level 1和Level 2。Level 1与DOS兼容，文件名采用传统的8.3格式，而且所有字符只能是26个大写英文字母、10个阿拉伯数字及下划线。Level 2则在Level 1的基础上加以改进，允许使用长文件名，但不支持DOS。注意：ISO 不支持单个大于2G的文件。</p>
</blockquote>
<p>Joliet：</p>
<blockquote>
  <p class="style1">Joliet文件系统是扩展文件系统之一，由Microsoft提出和实现。以ISO9660(1988)标准为基础，如果一CD是用Joliet文件系统创建，则它只能在window 9x和window NT4.0 或更新版下读取，但是不能在任何其它平台上读取。在Joliet文件系统下，长文件名允许字符数最多为64，长目录允许数目最多为64。但是文件名加它的完全路径总字符数不能超过120。</p>
</blockquote>
<h4>mkisofs部分参数列表：</h4>
<blockquote>
<table width="all" border="1" align="center">
  <tr>
    <td>-b FILE, -eltorito-boot FILE</td>
    <td>Set El Torito boot image name 				</td>
    <td>设置启动文件</td>
  </tr>
  <tr>
    <td>-hide GLOBFILE</td>
    <td>Hide ISO9660/RR file					</td>
    <td>将指定的目录或文件在ISO 9660系统中设置为隐藏</td>
  </tr>
  <tr>
    <td>-hide-list FILE</td>
    <td>File with list of ISO9660/RR files to hide</td>
    <td>将FILE文件中指定的文件或目录均设置为ISO9660系统下隐藏</td>
  </tr>
  <tr>
    <td>-hidden GLOBFILE</td>
    <td>Set hidden attribute on ISO9660 file</td>
    <td>设置ISO9660系统下文件或目录属性为隐藏</td>
  </tr>
  <tr>
    <td>-hidden-list FILE</td>
    <td>File with list of ISO9660 files with hidden attribute</td>
    <td>设置ISO9660系统下FILE文件中指定的文件或目录属性为隐藏</td>
  </tr>
  <tr>
    <td>-hide-joliet GLOBFILE</td>
    <td>Hide Joliet file						</td>
    <td>将指定的目录或文件在Joliet系统中设置为隐藏</td>
  </tr>
  <tr>
    <td>-hide-joliet-list</td>
    <td>FILE      	File with list of Joliet files to hide</td>
    <td>将FILE文件中指定的文件或目录均设置为Joliet系统下隐藏</td>
  </tr>
  <tr>
    <td>-J, -joliet</td>
    <td>Generate Joliet directory information	</td>
    <td>使用Joliet格式的目录与文件名称</td>
  </tr>
  <tr>
    <td>-joliet-long</td>
    <td>Allow Joliet file names to be 103 Unicode characters 		</td>
    <td>支持Joliet格式长文件名</td>
  </tr>
  <tr>
    <td>-l, -full-iso9660-filenames</td>
    <td>Allow full 31 character filenames for ISO9660 names		</td>
    <td>支持ISO 9660 32字符长度的文件名</td>
  </tr>
  <tr>
    <td>-m GLOBFILE, -exclude GLOBFILE</td>
    <td>Exclude file name</td>
    <td>指定的目录或文件名将不会被打包映像文件中</td>
  </tr>
  <tr>
    <td>-o FILE, -output FILE</td>
    <td>Set output file name</td>
    <td>设置镜像文件名</td>
  </tr>
  <tr>
    <td>-O, -optimize</td>
    <td>Optimize for iso space(md5 technology)</td>
    <td>对ISO镜像空间进行优化（使用md5技术）</td>
  </tr>
  <tr>
    <td>-relaxed-filenames</td>
    <td>Allow 7 bit ASCII except lower case characters (violates ISO9660)</td>
    <td>扩展的文件名（违反ISO9660格式规定）</td>
  </tr>
  <tr>
    <td>-gbk4dos-filenames</td>
    <td>Allow 8 bit ASCII GBK standard code characters (violates ISO9660)</td>
    <td> DOS下支持中文（违反ISO9660格式规定）</td>
  </tr>
  <tr>
    <td>-gbk4win-filenames</td>
    <td>Allow 8 bit ASCII GBK standard code characters (violates ISO9660)</td>
    <td>WIN下支持中文（违反ISO9660格式规定）</td>
  </tr>
  <tr>
    <td>-allow-lowercase</td>
    <td>Allow lower case characters in addition to the current character set (violates ISO9660)</td>
    <td>允许使用小写字母（违反ISO9660格式规定）</td>
  </tr>
  <tr>
    <td>-force-uppercase</td>
    <td>Do not allow lower case characters								</td>
    <td>文件名大写</td>
  </tr>
  <tr>
    <td>-allow-multidot</td>
    <td>Allow more than one dot in filenames (e.g. .tar.gz) (violates ISO9660)	</td>
    <td>允许多扩展名（违反ISO9660格式规定）</td>
  </tr>
  <tr>
    <td>-v, -verbose</td>
    <td>Verbose								</td>
    <td>显示详细信息</td>
  </tr>
  <tr>
    <td>-V ID, -volid ID</td>
    <td>Set Volume ID							</td>
    <td>设置生成ISO镜像的卷标</td>
  </tr>
  <tr>
    <td>-no-emul-boot</td>
    <td>Boot image is 'no emulation' image					</td>
    <td>非模拟模式启动 </td>
  </tr>
  <tr>
    <td>-boot-load-size #</td>
    <td>Set numbers of load sectors						</td>
    <td>设置加载扇区数</td>
  </tr>
</table>
</blockquote>
<h4>mkiso.bat 脚本示例：</h4>
<p>拿来主义的话只需将蓝字部分（共四处）按自己的实际情况修改即可。</p>
<blockquote>
  <p>    <strong>@echo off</strong><br>
    <span class="Notes">::不输出信息</span><br>
    <strong>cd /d &quot;%~dp0&quot;</strong><br>
    <span class="Notes">::cmd下跳转到本脚本所在目录 </span><br>
    <strong>path &quot;%~dp0bin&quot;;%path%</strong><br>
    <span class="Notes">::自动寻找本脚本所在目录下是否有名为bin的目录</span><br>
    <strong>mkisofs.exe <span class="Options">-o</span> <span class="bat">PE.ISO</span> -v <span class="Options">-V</span> &quot;<span class="bat">grub4dos</span>&quot; -hide-joliet boot.catalog -J -joliet-long -relaxed-filenames -gbk4dos-filenames -gbk4win-filenames -no-emul-boot -boot-load-size 4 <span class="Options">-b</span> <span class="bat">grldr</span> <span class="bat">BOOT</span></strong><br>
  <span class="Notes">
  :: -o PE.ISO 设置生成的镜像名为PE.ISO，放在本脚本所在目录下<br>
  :: -V "grub4dos" 设置镜像卷标为grub4dos<br>
  :: -hide-joliet boot.catalog 设置boot.catalog文件在Joliet系统下隐藏（默认生成的镜像根目录下会有boot.catalog文件，为了美观进行隐藏）<br>
  :: -boot-load-size 4 设置加载扇区数为4，即2048字节<br>
  :: -b grldr 设置镜像引导文件为镜像根目录下的grldr文件<br>
  ::  BOOT 镜像源文件所在目录名，这个目录中的所有文件将被打包成镜像</span></p>
</blockquote>
<p>&nbsp;</p>
<p><br>
</p>
<p><br />
</p>
</body>
</html>
